home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 11
/
FM Towns Free Software Collection 11.iso
/
t_os
/
data
/
dora
/
doramain.plt
< prev
next >
Wrap
Text File
|
1995-08-16
|
47KB
|
1,673 lines
/*******************************************************************
* RT-BBS NET専用MOPTERMオートパイロットDORAV1.10E *
* All Right Reserved, Copyright(c) モップ *
* (Masahiro Kezuka NIFTY-ID PFF00570) *
* All Right Reserved, Copyright(c) Yama-chan 1992 *
* (Hiroaki Yamada NIFTY-ID PEE01244) *
* All Right Reserved, Copyright(c) DORAGON 1992 *
* (Kouji Koumura NIFTY-ID GBH00541 *
* TGK-NET TGK0013 *
* ITY-NET ITYT0023) *
* All Right Reserved, Copyright(c) Take 1993 *
* (Masamichi Takemoto NIFTY-ID GHA00253 *
* ITY-NET ITYT0001) *
* All Right Reserved, Copyright(c) LRA. 1994 *
* (Wataru Ohmukai NIFTY-ID HGG03505) *
* All Right Reserved, Copyright(c)FAPX作者グループ(DORA移植元) *
* -なる-☆、フェイス、えんでん、コノミ、雅び、Omohyoideus *
* With *
********************************************************************/
/* DORAのV/L */
%VerLev{1.10E};%VL {110};
/* DEBUG MODE */
%DEBUG {No};
/* MOPTERMのバージョン */
%mopver @tail(@version,{for },{ });
/* MOPTERM/WinのデフォルトPortNo. */
%PortNo @case (mopver,
{Win31},
{im(@INIGet({MOPTERM.INI},{MopTerm},{DefaultPort}))},
,{im({})}
);
/*******************************************************************
* RTBBS-NET専用MOPTERMオートパイロットDORAMAIN.PLT(メイン処理 ) *
********************************************************************
動作確認●・ FMTOWNSII-MX,(増設RAM8MB),外付けH/D
MICROCORE MC14400FX &
OMRON MD96FB5V
・ FMTOWNS20F,内付けH/D、クロスケーブル接続
OMRON MD24FP5
・ FMTOWNS2F ,(6MB増設),外付けH/D
MICROCORE MC24PA5
・ FMTOWNSCX20 ,(8MB増設),外付けH/D
PM2400F2(富士通)
システムソフト v2.1 L40, MopTerm/T-OS v2.03i
WINDOWS v3.1 L12, MopTerm/Win v0.24j
対応確認済HOSTシステム
・The resource版 Turbo-BBS ver5.3βa
・The resource版 Turbo-BBS ver5.3βb FINAL
・The resource版 Turbo-BBS ver5.3βb Extension 2
・The resource edition Turbo-BBS ver5.3βb FINAL! ITY-Net 版
・KMF Independent Forum System Based RTBBS Ver.0.14
・Joyful Communication Network System ("The resource版 Turbo-BBS"改造)
・The resouce版 turbo-BBS を改編した "なっとぉ版 Turbo-BBS
・K.F.C.版 RT-BBS ver5.3βb+.02 FINAL!
・ミンキームーンネット版RTBBS Pちゃんヴァージョン
・The resourse edition Turbo-BBS ver5.3βb改MNK's BBS 版
・The_BEAT-NET版Turbo-BBS Ver3.3 for RTBBS
・The resourse版 Turbo-BBS を改造した MINA-NET用ヴァージョン
・The resource edition Turbo-BBS ver5.3βb 改MagicDragon Custom Rev 1.4
・The resource版 Turbo-BBS DIGITAL-BBS版 FINAL!
・The resourse版 Turbo-BBS を改造した AOI-NET用ヴァージョン
・Neuro Arranged RT-BBS Rel.1-01 やぎネット専用版
・virsiron :PAO net edition Turbo-BBS(k) TTBBS(k) ver 2.91
・SSS-NET版 [ UNIT:STBBS ] ver1.0c
* 定数・変数領域の指定 */
/* ID & PASSWORD */
var ID [8];
var PassWord[8];
var HanDLe[16];
/* アクセスユ-ザ-確認後アクセス中ならばトークする会員ID */
var TalkID1[20];var TalkID2[20];var TalkID3[20];var TalkID4[20];
var TalkID5[20];var TalkID6[20];var TalkID7[20];var TalkID8[20];
var TalkID9[20];var TalkID10[20];var TalkID11[20];var TalkID12[20];
var TalkID13[20];var TalkID14[20];var TalkID15[20];var TalkID16[20];
var TalkID17[20];var TalkID18[20];var TalkID19[20];var TalkID20[20];
var CMt1[50];var CMt2[50];var CMt3[50];var CMt4[50];var CMt5[50];
var CMt6[50];var CMt7[50];var CMt8[50];var CMt9[50];var CMt10[50];
var CMt11[50];var CMt12[50];var CMt13[50];var CMt14[50];var CMt15[50];
var CMt16[50];var CMt17[50];var CMt18[50];var CMt19[50];var CMt20[50];
/* 電話番号 */
var ROAD [80];var ROAD2[80];var ROAD3[80];var ROAD4[80];
var sROAD[80];/* 接続電話番号*/
var GEN [3];var GEN2[3];var GEN3[3];var GEN4[3];
var CALL[4]; /* 接続手順の設定 */
var REDIALt[2]; /* 再リダイアル間隔の設定 */
/*モデムコマンド及びダイアルタイプ */
var MODEM [60];var DIAL [1];
/* ディレクトリ */
var TEMP [64];var LOG [128];var UP [64];
var SOUND [64];var TEMP2 [64];var LOG2 [64];
var SOUND2 [64];var UP2 [64];var FSW [64];
var RTTLdir [64];var RTTL2 [64];var VIEWLOG [64];
var NPSDIR [64];
/* COMMAND.COMドライブ名 */
var COMDRV [30]; /*空き*/
/* ファイルパス名 */
var RTTLC [64];var MEMBER [64];
/* ログファイル作成モード */
var LOGmode [8];
/* NETの名称 */
var NET [6];var NETname [40];
/* みかか代計算データ */
var AcP [12];var AcPNo [1];
/* プロトコルの設定(T-OS) */
var binop [1]; /*プロトコルオプション実行*/
/*(T-OS)*/
var TBINty [16]; /*プロトコル*/
var TBINop [1]; /*空*/
/*(Win)*/
var BINty [16]; /*プロトコル*/
/*B-MAILコマンド*/
var BINop [2]; /*例「Z]or「MB」しかしネット毎に違う*/
/*○○○-NETにおける処理 */
var TGK [1536];
/* 画面背景色 */
var R [3];var G [3];var B [3];
/* オプションスイッチ */
var BELFIL [64];var VBELL [3];var NATTOU [3];
var CLICK [3];var TAB [2];var LOCK [3];
var OAK [5];
var HOSEI [3]; /*Noで複数ネット選択メニュー表示中止*/
var HedFut [3]; /*ヘッド&フッタの種類の設定*/
var Futless [3]; /*フッタレスOPTの設定*/
var INFO [3];
var DIVE [3];
var STYPE [1];
var DORD [1];
var FORD [1];
var aftLOG [3]; /*OPTでアップ後クリア*/
var freLOG [3]; /*OPTで巡回ログマージ*/
/* 設定ファイルのパス名 */
var SETFILE [64];var TGKFILE [64];
var SETFILE1[64];var SETFILE2[64];
/* オンライン処理フラグ */
var DORTBBS [3];
var BmalON [3]; /* バイナリメールON S/W */
var DOBMAIL [3];
var BMALDEL [3];
var BMALRED [3];
var DelBML [5];
var MAILDEL [3];
var MAILRED [3];
var DelML [5];
var FUTA [40]; /* 専用のフッタ情報 */
var afMEMO [32]; /* 通信後に登録するメモの内容 */
var PLTmemo [3]; /* up時「w」メモフラグ */
var REDIAL [4];
var START [3];
var AP3 [3];
var WHO [5];
var mPOINT [8];
var LGLOOK [3];
var MACTIV [8];
var BDLIST [3];
var DLLIST [3];
var FREE1 [3];
var JISAR [3];
var ESCon [3];
var moveline[4];
/* 各種設定フラグ */
var OPENING [3]; /* オープニング画面表示 */
var DORAEND [8]; /* 自動通信終了時処理 */
var UPDOWN [5];
var FMGR [64]; /* ファイルマネージャパイロットファイル名 */
var genteiT [3]; /* アクセス時間限定フラグ */
var LimiT [4]; /* 極悪改造ネット対応フラグ */
var FlyLine [1]; /* エコーバック行数の指定 */
var FLG [6]; /* Returnフラグの指定 */
/* 変数の定義 */
var sROAD [80]; /* チャンネル変更 */
var openT [2]; /* RT-BBS開局時間 */
var closeT [2]; /* RT-BBS閉局時間 */
var AM3 [6]; /* ログイン時フラグ */
var loginMODE[7]; /* USER ID入力からSTARTフラグ */
var ACCESS [5]; /* 通信開始時刻 [HH:MM] */
var liblist [300]; /* ライブラリ番号リスト */
var IDlist [80]; /* 爆裂トークIDリスト */
var Btitle [3]; /* タイトルから読みたいボードのログを指定 */
var endWD [2]; /* 伝言板 or 最後の一言での 終了コマンド */
/* RTTLC関連の設定 */
var RTop [64]; /* RTTLCコマンドopt*/
var RTcfg [55]; /* RTTLC CFG dir*/
var Dble[3];var mop[3];var lop[3];var gop[3];/*RT CFG opt関係*/
var Top[3];var Mop[3];var Gop[3];var Lop[3];var Kop[3];
var Rop[64];var MorL[3];var Nbrd[60];var mes[60];var DeLog[3];
var bop[3];/*未使用*/
/* ウェイト時間の設定 */
%Wtime1 10; /* モデム応答待ち時間 */
%Wtime2 60;%Wtime3 90;%Wtime5 180; /* RTBBS-NETプロンプト待ち時間 */
%Wtime4 60; /* select入力待ち時間 */
%WtimeD 3600; /* ダウンロード終了待ち時間の限定 */
%WtimeU 2; /* アップロード準備待ち時間の限定 */
var BELL [1]; /* ベルコード */
/* 復帰改行コード */
%CRLF @xc({0d})|@xc({0a});
%CTRX @xc({18})|@xc({18})|@xc({18})|@xc({18});
/************************************************************************
* 共通処理モジュール *
************************************************************************/
/* 音声メッセージ出力処理 */
%SNDMSG {[file]
case (SOUND2={}||SOUND2={\},
{No},
{
var File [64];
case (mopver={Win31},
{Yes},{File:=@body(file,,{.})|{.wav}},
{No},{File:=file}
);
case (@filechk(SOUND2|File),
{Yes}, {snd(SOUND2|File)},
{No}, {display(BELL)}
)
},
{Yes},{display(BELL)}
);
};
%PLTSTOP{SNDMSG({owata_f.snd});
display({\nオートパイロットDORA}|VerLev|{を停止しました\n});
stop};
%AUTOEND{footnote({オートパイロットの終了処理をしています});
display(NET|{-NETとの通信を終了しました\n});
SNDMSG({owata_f.snd});
wait(2)};
/* パラメタで指定されたディレクトリへ移動する(「A:\」と「A:」の両方が可能) */
%setcdir2{[dir]
setcdir(@case(@nochar(dir),2,{im(dir|{\})},,{im(dir)}));
};
/* 指定されたディレクトリーを(もし,無ければ)作成する。 */
%mkdir2 {[dir]
%tempHLP{☆ドライブ指定不良☆
貴方が指定された「}|dir|{」は、未登録のドライブ装置}|@getchar(dir,1,2)
|{に所属しています。
もう一度<< 各種の設定 >>→「ログファイルの設定」を行って下さい。
};
case (@setcdir2(dir),
{No},
{
case (@nochar(dir)==2,
{Yes},
{
display({装置(}|dir|{)が使えません。\n});
SNDMSG({okasi_f.snd});HLPview(tempHLP)
},
{No},
{
delfile(dir);
mkdir2(@body(dir,,{\}));
setcdir2(@body(dir,,{\}));
mkdir(@tail(dir,{\}));
});
});
};
/* ディレクトリの最終に『\』を付加する */
%dir2 {
[dir]
case (@nochar(dir)==3,
{No},{im(dir|{\})},{Yes},{im(dir)}
);
};
/* 指定ディレクトリのサブディレクトリ名を返す */
%subdir {
[dir,sdir]
im(@dir2(dir)|sdir);
};
/* n番目の部分文字列をとりだす関数 */
%nth {[str,n,sep] /* 元の文字列,順番,区切り文字列 */
var str1 [@nochar(str)+1];
var m [@nochar(n)+1];
str1:=str;
m:=n;
loop ({
m:=m-1;
case (m>0,
{No},{str1:=@head(str1,sep);im({No})},
{Yes},{str1:=@body(str1,sep);im({Yes})}
);
});
im(str1);
};
/* 指定された文字列chrがstrに含まれているかどうかチェックする */
%exist {
[str,chr]
im(@strsrch(str,chr)!=0);
};
/* 指定された文字列が含まれていればその先頭からの位置を通知する */
/* (存在しなければ、返り値=0) */
%strsrch{
[str,chr]
%leng1 @nochar(str);
%leng2 @nochar(@head(str,chr));
case (leng2<leng1,
{Yes},{im(leng2+1)},
{No},{im(0)}
);
};
/* 文字列の置換 */
%replace{
[str,old,new]
var tmp [@nochar(str)+@nochar(new)*10];
tmp:=str;
case (@exist(tmp,old),
{Yes},
{
loop ({
tmp:=@head(str,old)|new|@body(str,old);
im(@exist(tmp,old));
});
im(tmp);
},
{No},{im(str)}
);
};
/* Yes/Noを1/2に変換する */
%YesNo {[YN,default];
case (YN,
{Yes},{im({1})},{No},{im({2})},,{im(default)});
};
%RESERV {
[reserv]
case (reserv,
{ 1},{im({})},
{ 2},{im({保留;})},
,{im({})}
);
};
/* 前後の空白をはぎ取る */
%strip {
[str]
%strip1 { /* 先頭の連続する空白を削除する */
[str]
case (@getchar(str,1,1),
{ },{im(@strip1(@getchar(str,2)))},
,{im(str)}
);
};
%strip2 { /* 末尾の連続する空白を削除する */
[str]
%n @nochar(str);
case (n,
0,{im(str)},
1,
{case(str={ },{Yes},{im({})},{No},{im(str)})},
,
{
case (@getchar(str,n,1),
{ },{im(@strip2(@getchar(str,1,n-1)))},
,{im(str)}
);
});
};
im(@strip2(@strip1(str)));
};
/* 指定されたCUGボードのパスワードを変数TGKから検索する */
%mkPASS {[cugBlist,Spass] var cugNo1[3];var cugNo[60];
cugNo:=cugBlist;cugPass:=Spass;
loop ({case (cugNo={},
{Yes}, {cugPass:=NET;im({No})},
{No},
{cugNo1:=@head(cugNo,{,});
case (@nochar(cugNo1),
{3},{cugNo1:=cugNo1},{2},{cugNo1:={0}|cugNo1},
{1},{cugNo1:={00}|cugNo1}
);
case (cugNo1=mescan1,
{Yes},{cugPass:=Spass;im({No})},
{No},{cugNo:=@body(cugNo,{,});im({Yes});}
);
})
})
};
%ckPASS {
loop ({ n:=n+1;
%a @getline(TGK,n,1);
case (a={},
{Yes},{im({No})},,
{case (@nth(a,1,{/})={CUGボード}
|| @nth(a,1,{/})={SIGボード},
{Yes},
{mkPASS(@nth(a,4,{/}),@nth(a,5,{/}));im({No});},
{No},{im({Yes})}
)
});
});
};
%SCANPW{ [mescan]
var n[3];var mescan1[3];var cugPass[8];
case (@nochar(mescan),
{3},{mescan1:=mescan},{2},{mescan1:={0}|mescan},
{1},{mescan1:={00}|mescan}
);
case(mescan={},
{Yes},{im({})},,
{ case(@tail(TGK,{CUGボード})={}
|| @tail(TGK,{SIGボード})={},
{Yes},{im(NET)},
{No},{ckPASS;case(cugPass<>{},
{Yes},{im(cugPass)},
{No},{im(NET)})
})
});
};
/* 現在の日付・時刻を得る 「yyyy-mm-dd (曜) hh:mm:ss」 */
%getdt {%dt @daylong;%week @case (@getchar(dt,12,3),
{Sun},{im({日})},{Mon},{im({月})},
{Tue},{im({火})},{Wed},{im({水})},
{Thu},{im({木})},{Fri},{im({金})},
{Sat},{im({土})},,{im({ })});
im(@getchar(dt,1,4)|{-}|@getchar(dt,6,2)|{-}|@getchar(dt,9,2)|
{ (}|week|{) }|@getchar(dt,16,8));
};
/* 指定されたファイルをリネームして同一のディレクトリにコピーする */
%renname{
[OLDFILE,NEWFILE]
copyfile(OLDFILE,@body(OLDFILE,,{\})|{\}|NEWFILE);delfile(OLDFILE);
};
/* 指定されたディレクトリに yymmddnn.* というファイルを作成する */
%crefile{[path,sfx]
var n[2];var file1[12];
%d @getdt;%date @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
mkdir2(path);setcdir2(path);
n:=-1;
loop ({ n:=n+1;
case (@nochar(n)=1,{Yes},{n:={0}|n});
case (sfx={},
{Yes},{file1:=date|n},{No}, {file1:=date|n|{.}|sfx});
case (@filechk(file1)={No}||n==99,
{Yes},{im({No})},{No}, {im({Yes})});
});
im(file1)};
/* 英大文字を小文字に変換する */
%tosmall{[char]
case (char,
{A},{im({a})},{B},{im({b})},{C},{im({c})},{D},{im({d})},
{E},{im({e})},{F},{im({f})},{G},{im({g})},{H},{im({h})},
{I},{im({i})},{J},{im({j})},{K},{im({k})},{L},{im({l})},
{M},{im({m})},{N},{im({n})},{O},{im({o})},{P},{im({p})},
{Q},{im({q})},{R},{im({r})},{S},{im({s})},{T},{im({t})},
{u},{im({U})},{V},{im({v})},{W},{im({w})},{X},{im({x})},
{Y},{im({y})},{Z},{im({z})},
,{im(char)}
);
};
/* 全てのメモを退避する */
%SaveAllMemo{
var n [2];
n:=0;
loop ({
n:=n+1;
case (n<=9,
{Yes},{delfile(TEMP2|{_BACKUP}|n|{.BAK});im({Yes})},
{No},{im({No})}
);
});
loop ({
case (@mlast!=0,
{Yes},
{
case (@mcheck,
0,{mopen(@mlast)},
@mlast,,
,{mclose(1);mopen(@mlast)}
);
});
%memono @mcheck;
case (memono!=0,
{Yes},
{
mclose(1);
mwrite(TEMP2|{_backup}|memono|{.BAK},memono);
mopen(memono);
mclose(3);
});
im(@mlast!=0);
});
};
/* 退避ファイルからメモを復元後、退避ファイルを消去する */
%RestoreMemo{
DeleteMemo(1);
var n [2];
var m [2];
n:=0; m:=0;
loop ({
n:=n+1;
case (@filechk(TEMP2|{_BACKUP}|n|{.BAK}),
{Yes},
{m:=m+1;
mread(TEMP2|{_BACKUP}|n|{.BAK},m);
mopen(m,m*20-20,m*15+6,m*20+459,m*15+324);
mclose(1);
delfile(TEMP2|{_BACKUP}|n|{.BAK});
});
im(n<9);
});
};
/* 全てのメモをクローズする */
%CloseAllMemo{ case(@mlast!=0 && @mcheck==0,{Yes},{mopen(@mlast)});
case(@mcheck!=0,{Yes},{loop({mclose(2);im(@mcheck!=0)})})
};
/* 全てのメモを非編集状態にする */
%InactMemo{
case(@mcheck!=0,{Yes},{mclose(1)});
};
/* memono以降のメモを削除する */
%DeleteMemo{
[memono]
loop ({
case (@mlast>=memono,
{Yes},
{
case (@mcheck==0,{Yes},{mopen(@mlast,0,21,79,61)});
case (mopver,{Win31},{mopen(@mcheck,0,21,79,61)});
case (@mcheck>=memono,
{Yes},{mclose(3)},
{No},{mclose(1);mopen(@mlast,0,21,79,61)}
);
im({Yes});
},
{No},{im({No})}
);
});
};
/* ファイル名にワイルドカード(*,?)が含まれるかチェックする */
%wild {[file1]
case (@nochar(file1)==0,
{Yes},
{im({No})},
{No},{
case (@getchar(file1,1,1),
{*},{im({Yes})},
{?},{im({Yes})},
,{im(@wild(@getchar(file1,2)))}
);
});
};
/* 電話料金計算 */
%RYOUKIN{
%cdir @getcdir;
%memono @mlast+1;
%picknt{footnote(NET|{ネットの電話料金を計算中です});
CloseAllMemo;setcdir(CDIR2);
mwrite(TEMP2|{_connect.dat},memono);
case (@filechk(CDIR2|{denwadai.exe}),
{Yes},
{dispoff(!DEBUG);
command({denwadai.exe }|AcPNo|{ }
|TEMP2|{_connect.dat }|TEMP2|{_ryoukin.new /J});
dispoff({No});
case (@filechk(TEMP2|{_ryoukin.new}),
{Yes},{mclear(memono);
mread(TEMP2|{_ryoukin.new},memono);
mopen(memono,0,21,639,459,{w});
},
{No},{display({みかか代計算に失敗しました\n});
wait(2);mopen(memono,0,21,639,459,{w});mclose(1)
});
},
{No},{display({denwadai.exeが存在しません})});
};
%savememo {CloseAllMemo;
mwrite(LOG2|{アクセスdat\ryoukin.dat},memono)
};
case (@mlast==9,
{Yes},
{footnote({メモ番号が一杯のため、新しいメモを開けません});
wait(2);},
{No},
{CloseAllMemo;madd(memono,{\n});mclear(memono);
mread(LOG2|{アクセスdat\CONNECT.DAT},memono);
mopen(memono,0,21,639,459,{r});
loop ({
footnote({終了計算},{b});
waitx();
case (@xtype,
101,{savememo;im({No})},201,{savememo;im({No})},
102,{picknt;im({Yes})},202,{picknt;im({Yes})},
,{im({Yes})}
);
});
case (@mcheck==memono,
{Yes},{mclose(3)},
{No},{CloseAllMemo;mopen(memono);mclose(3)}
);
});
delfile(TEMP2|{_connect.dat});
delfile(TEMP2|{_ryoukin.new});
setcdir(cdir)
};
/* ID検索処理 */
%IDfile {
<ID検索を可能にする為に>
☆「会員名簿 (or 全員のプロフィールを見る)」を実行下さい。
この場合は、ID検索リストファイルが自動生成されます。
<上記を実行したが、このコメントが出てしまう方へ>
☆「ログファイルの設定」で存在していないファイルを
ID検索リストファイルに指定してませんか?
};
/* 空文(改行コードのみの文字列)をカットする */
%CRCUT{[x] var y[20];
case (x,
CRLF,{y:={}},
{},{y:={}},
,{y:=@body(x,,{})}
);
im(y);
};
/* コンマをカットする */
%conma {[x]
%size @case (@nochar(x)>0
,{Yes},{im(@nochar(x))}
,,{im({10})});
var y[size];
var n[3];var N[3];
n:=0;N:=@nochar(x);
loop ({n:=n+1;
case (n<=N,
{Yes},{
%a @getchar(x,n,1);
case (a={,},
{Yes},{im({Yes})},
{No},{y:=y|a;im({Yes})}
);
},
{No},{im({No})}
);
});
im(y);
};
/* 最後の行に改行コードが無ければ追加する */
%rtCHK {[memono]
var lineNo[3];var charNo[4];var a[82];var b[4];
%denMEM @LINECUT(@memo(memono));
lineNo:=@noline(denMEM);
a:= @getline(denMEM,lineNo,1);
b:= @getchar(a,charNo);
charNo:=@im(@nochar(a));
case (b=CRLF,
{Yes},{display({改行マークが有ります\n})},
{No},{
case (lineNo=0 || a={},
{Yes},{display({改行マークを追加しません\n});
CloseAllMemo;
mclear(memono);madd(memono,denMEM);
mopen(memono,0,21,639,459,{w})
},
{No},{
display({改行マークを追加しました\n});
CloseAllMemo;
mclear(memono);madd(memono,denMEM|{\n});
mopen(memono,0,21,639,459,{w})
});
});
case (DEBUG,{Yes},
{display({lineNo=}|lineNo|{,charNo=}|charNo|{\n}|
{最後の行=}|a|{\n});
});
};
/* 空行(改行コードのみの行)と不要な行をカットする */
%LINECUT{[x]
%size @case (@nochar(x)>0
,{Yes},{im(@nochar(x))}
,,{im({10})});
var y [size];
var n [3];
var m [3];
n:=1;m:=1;y:={};
loop ({
%a @getline(x,n,1);
case (a,
CRLF,{n:=n+1;im({Yes})},
{},{im({No})},
,{case (
@getchar(a,1,8)={ファイル}||
@getchar(a,1,4)={番号}||
@getchar(a,1,2)={Ch}||
@getchar(a,1,2)={ >}||
@getchar(a,1,1)={-}||
@getchar(a,1,1)={F}||
@getchar(a,1,1)={M}||
@getchar(a,1,4)={SELE},
{No},{y:=y|a;n:=n+1;m:=m+1;im(m<999)},
{Yes},{n:=n+1;im({Yes})}
);
});
});
im(y);
};
/* 文字を二桁に変換 */
%To2 {[x]
var netNo[2];
netNo:=x;
case (@nochar(netNo),
{2},{netNo:=netNo},
{1},{netNo:={0}|netNo},
{0},{netNo:={00}});
im(netNo);
};
/* 文字を三桁に変換:複数 */
%To3 {[x]
var mesNo[300];var MesNo[6];var TNo[300];var n[3];
mesNo:=x;TNo:={};n:={0};
loop ({n:=n+1;
case (mesNo={},
{Yes},{im({No})},
{No},
{MesNo:=@head(mesNo,{,});
case (@nochar(MesNo),
{4},{
case (@getchar(MesNo,1,1),
{#},{MesNo:=@getchar(MesNo,2,3)},
,{MesNo:=@getchar(MesNo,1,3)})
},
{3},{MesNo:=MesNo},
{2},{
case (MesNo={No},
{Yes},{MesNo:={}},
{No},{MesNo:={0}|MesNo})
},
{1},{MesNo:={00}|MesNo},
,{MesNo:=@getchar(MesNo,1,3)}
);
case (MesNo={all}||MesNo={ALL},
{No},{
case (TNo={},
{Yes},{TNo:=MesNo},
{No},{
case (TNo={ALL}||TNo={all},
{Yes},{TNo:=MesNo},
{No},{TNo:=TNo|{,}|MesNo})
})
},
{Yes},{case (n=1 && MorL={BoD},
{Yes},{TNo:={ALL}
})
});
mesNo:=@body(mesNo,{,});
im({Yes});
});
});
im(TNo);
};
%pickid {
%m @nolmemo(memono1); /*メモの総行数を返す*/
%n @xlinenum; /*カーソル位置の行数を返す*/
%l1 @case (n<1,
{Yes},{im(@memo(memono1,1,1))},
{No},
{case (n>m,
{Yes},{im(@memo(memono1,m,1))},
{No},{im(@memo(memono1,n,1))}
);
});
case (@getchar(l1,1,2)={ID},
{Yes}, {im(@body(@body(l1,{:},{/}),{ },{ }))},
{No},
{
case (@getchar(l1,21,1)={/} && @getchar(l1,24,1)={/}||
@getchar(l1,23,1)={/} && @getchar(l1,26,1)={/}||
@getchar(l1,29,1)={/} && @getchar(l1,32,1)={/},
{Yes},{im(@head(l1,{ }))},
{No},{
case (@getchar(l1,24,1)={/} &&
@getchar(l1,27,1)={/}||
@getchar(l1,26,1)={/} &&
@getchar(l1,29,1)={/}||
@getchar(l1,32,1)={/} &&
@getchar(l1,35,1)={/},
{Yes},{im(@head(@body(l1,{ }),{ }))},
{No},{footnote({カーソルを「IDナンバー」に合わせて}| {下さい});im({});
})
})
});
};
%pickhd{
%m @nolmemo(memono1);
%n @xlinenum;
%l1 @case (n<1,
{Yes},{im(@memo(memono1,1,1))},
{No},
{case (n>m,
{Yes},{im(@memo(memono1,m,1))},
{No},{im(@memo(memono1,n,1))}
);
});
case (@getchar(l1,1,2)={ID},
{Yes}, {im(@body(@body(l1,{:}),{ },{ }))},
{No}, {im(@getchar(l1,1,18))}
);
};
%pickmes{
%m @nolmemo(memono1); %n @xlinenum;
%l1 @case (n<1,
{Yes},{im(@memo(memono1,1,1))},
{No},
{case (n>m,
{Yes},{im(@memo(memono1,m,1))},
{No},{im(@memo(memono1,n,1))}
);
});
case (@nochar(@head(@body(l1,{#}),{ }))={3},
{Yes}, {im(@head(@body(l1,{#}),{ }))},
{No},{footnote({カーソルを「ボードナンバー」に合わせて下さい});im({});
});
};
%prSIDsrch{
case (memono1>9,
{Yes},
{footnote({メモ番号が一杯のためメモを開けません});
wait(1);im({});
},
{No},
{CloseAllMemo;madd(memono1,{\n});mclear(memono1);
case (@filechk(MEMBER),
{Yes},{mread(MEMBER,memono1)},
{No},{
case (@filechk(LOG2|{PROFILE\member.lst}),
{Yes},{mread(LOG2|{PROFILE\member.lst},memono1)},
{No},{madd(memono1,IDfile)}
);
});
});
};
/* ID検索処理 */
%IDsearch{
%memono1 @mlast+1;
prSIDsrch;mopen(memono1,0,21,639,459,{r});
footnote({選択中止},{b});
loop ({
waitx();
case (@xtype,
101,{footnote({});im(@pickid)},
201,{footnote({});im(@pickid)},
102,{footnote({});im({})},
202,{footnote({});im({})},
memono1,{footnote({});im(@pickid)},
,{im({Yes})}
);
});
case (@mcheck==memono1,
{Yes},{mclose(3)},
{No},{CloseAllMemo;mopen(memono1);mclose(3)}
);
};
/* HNDLE検索処理 */
%HDsearch{
%memono1 @mlast+1;
prSIDsrch;mopen(memono1,0,21,639,459,{r});
footnote({選択中止},{b});
loop ({
waitx();
case (@xtype,
101,{footnote({});im(@LINECUT(@pickhd))},
201,{footnote({});im(@LINECUT(@pickhd))},
102,{footnote({});im({})},
202,{footnote({});im({})},
memono1,{footnote({});im(@LINECUT(@pickhd))},
,{im({Yes})}
);
});
case (@mcheck==memono1,
{Yes},{mclose(3)},
{No},{CloseAllMemo;mopen(memono1);mclose(3)}
);
};
/* ドライブ&ディレクトリ名無しファイル名出力 */
%FileND{
[file]
var NoDirF [64];
NoDirF:=@tail(@tail(file,{:}),{\});
%NameLong @nochar(NoDirF);
case( NameLong > 12,
{Yes},{im(@getchar(NoDirF,NameLong-12))},
{No},{im(NoDirF)});
};
/* 巡回ボード「巡マークの追加処理」 */
%prMESsrch{[fbNo,MorL]
var n[3];n:={0};%cdir @getcdir;
InactMemo;
case(@mlast>=memono1,{Yes},{mclear(memono1)});
case (MorL,
{BoD},{
case (@filechk(LOG2|{board\title.txt}),
{Yes},
{%LISTbod @LINECUT(@read(LOG2|{board\title.txt}));
madd(memono1,LISTbod);
case (fbNo={all}||fbNo={ALL}||fbNo={},
{No},{FBoadNo(fbNo)});
},
{No},{footnote(neverAC);wait(2);
madd(memono1,neverAC)
});
},
{LiB},{
case (@filechk(LOG2|{datalib\}|NET|{dlib.lst}),
{Yes},
{
%LISTlib @LINECUT(@read(LOG2|{datalib\}
|NET|{dlib.lst}));madd(memono1,LISTlib);
case (fbNo={all}||fbNo={ALL}||fbNo={},
{No},{FBoadNo(fbNo)});
},
{No},{footnote(neverAC);wait(2);
madd(memono1,neverAC)
});
});
};
%FBoadNo{[fbNo]
%Chek @memo(memono1);
%size @nochar(Chek)+@noline(Chek)*10;
var y[size];y:={};
loop ({ n:=n+1;
%a @getline(@memo(memono1),n,1);
case (a={},
{Yes},{im({No})},,
{case (@exist(fbNo,@tail(a,{#},{ })),
{Yes},
{var Hyozi[11];
case(DeLog,{Yes},{Hyozi:={ログ削除→}},
{No},{Hyozi:={ログ書込→}},
{Lup},{Hyozi:={アプロード先→}},,
{Hyozi:={巡回→}});
y:=y|Hyozi|a
},
{No},{y:=y|a}
);
im({Yes})
});
});
case(@mlast>=memono1,{Yes},{mclear(memono1)});
%NewfbNo @LINECUT(y);
madd(memono1,NewfbNo);
};
/*エラーコメント*/
%neverAC{一度ネットにアクセスしてから御使用ください};
/* 表示中のファイル内のESC制御記号をカットする */
%ESC {var n[1];
case (memono+2=@mlast,
{Yes},{n:=2},{No},{n:=0});
footnote({現在表示しているメモNo.}|memono+n|
{のESC制御記号をカット中です});
InactMemo;%cdir @getcdir;
delfile(TEMP2|{temp.$a$});delfile(TEMP2|{escctr.log});
mwrite(TEMP2|{escctr.log},memono+n);
setcdir(CDIR);
case (DEBUG,{Yes},
{display({escctr -D}|TEMP2|{ -K}|TEMP2|{ }|TEMP2|{escctr.log })});
dispoff(!DEBUG);
command(CDIR2|{escctr -D}|TEMP2|{ -K}|TEMP2|{ }|TEMP2|{escctr.log});
dispoff({No});
setcdir(cdir);
case (@filechk(TEMP2|{escctr.log}),
{Yes},{mclear(memono+n);mread(TEMP2|{escctr.log},memono+n);
mopen(memono+n,0,21,639,459,{w})},
{No} ,{display({ESCカット機能には ESCCTR.EXE がパスの通った}|
{ディレクトリに必要です\n});
wait(2);mopen(memono+n,0,21,639,459,{w});mclose(1)});
};
/* ボードNo.検索処理 */
%MLserch{[fbNo,MorL]
%memono1 @mlast+1;
case (memono1>9,
{Yes},
{footnote({これ以上メモを開けません});wait(1);im({})},
{No},
{
loop ({
prMESsrch(fbNo,MorL);mopen(memono1,0,21,639,459,{r});
case (ESCon={No},{No},{ESC});
footnote({選択中止},{b});
waitx();moveline:=@xlinenum; /*追記行*/
case (@xtype,
101,{footnote({});im(@pickmes)},
201,{footnote({});im(@pickmes)},
102,{footnote({});im({})},
202,{footnote({});im({})},
memono1,{footnote({});im(@pickmes)},
,{im({Yes})}
);
});
case (@mcheck==memono1,
{Yes},{mclose(3)},
{No},{CloseAllMemo;mopen(memono1);mclose(3)}
);
});
};
/* CD-ROM 辞書 検索 */
%CDfind {
[memono]
var PARAM [64];
var DICNO [2];
DICNO:=1; /* 辞書番号デフォルト値 */
loop ({
footnote({CD-ROM辞書を検索します (辞書番号:}|DICNO|{)});
PARAM:=@input({検索キーを入力してください}|
{ 改行のみでCD辞書の選択});
case (PARAM<>{},
{Yes},
{
footnote({CD-ROM 辞書検索中(検索キー『}|
PARAM|{』)});
delfile(TEMP2|{doradic.tmp});
%cdir @getcdir;
setcdir(CDIR);
dispoff(!DEBUG);
command({DIC.EXE -gD}|DICNO|{ }|PARAM|{ > }|
TEMP2|{doradic.tmp});
dispoff({No});
setcdir(cdir);
InactMemo;
madd(memono,{});
mclear(memono);
case (@filechk(TEMP2|{doradic.tmp}),
{Yes},{mread(TEMP2|{doradic.tmp},memono)},
{No},{footnote({CD辞書検索には DIC.EXE が}|
{パスの通ったディレクトリに必要です})}
);
mopen(memono);
var flag [6];
loop ({
footnote({終了検索 切替},{b});
waitx();
case (@xtype,
101,{flag:={end};im({No})},
201,{flag:={end};im({No})},
102,{flag:={next};im({No})},
202,{flag:={next};im({No})},
105,{flag:={select};im({No})},
205,{flag:={select};im({No})},
,{flag:={};im({Yes})}
);
});
case (flag,
{next},{im({Yes})},
{end},{im({No})},
{select},{DICsel}
);
},
{No},{DICsel}
);
});
};
/* CD辞書切替え */
%DICsel {
footnote({CD辞書の選択をします});
%cdir @getcdir;
delfile(TEMP2|{doradic.prm});
delfile(TEMP2|{doradic.tmp});
write(TEMP2|{_mopdic.prm},{});
setcdir(CDIR);
dispoff(!DEBUG);
command({DIC.EXE < }|TEMP2|{_mopdic.prm}|{ > }|
TEMP2|{doradic.tmp});
dispoff({No});
setcdir(cdir);
InactMemo;
madd(memono,{});
mclear(memono);
case (@filechk(TEMP2|{doradic.tmp}),
{Yes},{mread(TEMP2|{doradic.tmp},memono)},
{No},{footnote({CD辞書検索には DIC.EXE が}|
{パスの通ったディレクトリに必要でキ})}
);
mopen(memono);
loop ({
SNDMSG({erande_f.snd});
footnote({終了 選択 取消},{b});
waitx();
case (@xtype,
101,{DICNO:=0;im({No})},
201,{DICNO:=0;im({No})},
103,{DICNO:=@xlinenum;im({No})},
203,{DICNO:=@xlinenum;im({No})},
105,{im({No})},
205,{im({No})},
memono,{DICNO:=@xlinenum;im({No})},
,{im({Yes})}
);
});
im(DICNO!=0);
};
/* 指定回数の文字列の繰り返し */
%Sn {[n,str]
var buf[500];
var c[3];
buf:={};
c:=0;
loop({buf:=buf|str; c:=c+1; im(c<n)});
im(buf)
};
/* 半角空白を追加して指定文字数にする(スタックエラー対策(笑):n<=500) */
%SPP {
[x,n,p] /* 文字列,文字数,追加位置(省略時:左,それ以外:右)*/
%stl @nochar(x);
case (stl<n,
{No},{im(x)},
,
{
%spc n-stl;
case (p={},
{Yes},{im(@Sn(spc,{ })|x)},
{No}, {im(x|@Sn(spc,{ }))}
);
});
};
/* 初期化 */
%intUSR {
LOG:={}; aftLOG:={};
freLOG:={}; UP:={}; FSW:={}; RTTLdir:={};
RTop:={}; VIEWLOG:={}; MEMBER:={}; UPDOWN:={};
MAILDEL:={}; MAILRED:={}; DelML:={}; BmalON:={};
BMALDEL:={}; BMALRED:={}; DelBML:={}; ESCon:={};
PLTmemo:={}; HedFut:={}; BINop:={}; WHO:={};
TalkID1:={};TalkID2:={};TalkID3:={};TalkID4:={};TalkID5:={};
TalkID6:={};TalkID7:={};TalkID8:={};TalkID9:={};TalkID10:={};
TalkID11:={};TalkID12:={};TalkID13:={};TalkID14:={};TalkID15:={};
TalkID16:={};TalkID17:={};TalkID18:={};TalkID19:={};TalkID20:={};
CMt1:={};CMt2:={};CMt3:={};CMt4:={};CMt5:={};CMt6:={};CMt7:={};
CMt8:={};CMt9:={};CMt10:={};CMt11:={};CMt12:={};CMt13:={};CMt14:={};
CMt15:={};CMt16:={};CMt17:={};CMt18:={};CMt19:={};CMt20:={};
R:={};G:={};B:={};
};
/* 通信ポートのオープン */
%OpenPort{
case(mopver,{Win31},{portno(PortNo)});
};
/* 通信ポートのクローズ */
%ClosePort{
case(mopver={Win31}&&@linechck={No},{Yes},{portno(100)});
};
/* 初期設定 */
%init {
case(OAK={},{Yes},{setoak({J})},{No},{setoak(OAK)});
case(REDIALt={},{Yes},{REDIALt:={20}});
case(REDIAL={},{Yes},{REDIAL:={5}});
case(CALL={},{Yes},{CALL:={固定}});
case(NATTOU={Yes}||NATTOU={No},{Yes},{nattou(NATTOU)});
case(CLICK={Yes}||CLICK={No},{Yes},{click(CLICK)});
case(R<>{}&&G<>{}&&B<>{},{Yes},{backclr(R,G,B)});
case(VBELL={Yes}||VBELL={No},{Yes},{visibell(VBELL)});
case(@tail(BELFIL,{.}),
{snd},{bellfile(BELFIL)},{SND},{bellfile(BELFIL)});
case(TAB<>{},{Yes},{tab(TAB)});
case(TEMP={},{Yes},{TEMP:=CDIR});
TEMP2:=@dir2(TEMP);
case(TEMP<>{}&&@setcdir2(TEMP)={No},{Yes},{mkdir2(TEMP)});
case(LOG={},{Yes},{LOG:=CDIR;FSW:=LOG|{\FREESOFT}});
LOG2:=@dir2(LOG);
case(LOG<>{}&&@setcdir2(LOG)={No},{Yes},{mkdir2(LOG)});
case(UP={},{Yes},{UP:=TEMP});
UP2:=@dir2(UP);
case(UP<>{}&&@setcdir2(UP)={No},{Yes},{mkdir2(UP)});
SOUND2:=@dir2(SOUND);
RTTL2:=@dir2(RTTLdir);
RTcfg:=@body(RTTLC,,{\});
case(INFO={},{Yes},{INFO:={Yes}});
case(DIVE={},{Yes},{DIVE:={Yes}});
case(STYPE={},{Yes},{STYPE:={x}});
case(DORD={},{Yes},{DORD:={+}});
case(FORD={},{Yes},{FORD:={-}});
};
/* 指定されたファイルマネージャを起動する */
%FILEMGR{
case (FMGR,
{}, {setcdir(CDIR);#DORAEDIT.PLP},
,
{
%SFX @tail(FMGR,{.});
case (SFX={COM}||SFX={com}||
SFX={EXE}||SFX={exe}||
SFX={BAT}||SFX={bat},
{Yes},
{command(FMGR)}
);
case (SFX={PLT}||SFX={plt}||
SFX={PLP}||SFX={plp},
{Yes},
{setcdir(@body(FMGR,,{\}));%fmgr @read(FMGR);fmgr}
);
});
};
/************************************************************************/
/* アクセスパターン設定処理 */
/************************************************************************/
/* 設定を登録 */
%setREGIST{
case (accUSR<>{},{Yes},{
case (@filechk(CDIR2|accUSR),{Yes},{
%ExcPilot {#}|CDIR2|accUSR;ExcPilot;init;
SETFILE1:=accUSR;
})});
case (accTGK<>{},{Yes},{
case (@filechk(CDIR2|accTGK),{Yes},{
%ExcPilot {#}|CDIR2|accTGK;ExcPilot;init;
SETFILE2:=accTGK;
})});
};
/* 設定コピー */
%NETCOPY{
footnote({読み込むファイルを選択してください});
setcdir(CDIR2); %file @filesel;
case (file={},
{Yes},{CloseAllMemo},
{No},
{
CloseAllMemo;
madd(memono+1,{\n});
mclear(memono+1);
case(@filechk(file),{Yes},{mread(file,memono+1)});
mopen(memono,0,21,639,240,{r});mclose(1);
mopen(memono+1,0,241,639,459,{r} );
select({このファイル内容を追加してもいいですか?},
Wtime4,{CloseAllMemo},
{ O K },
{
CloseAllMemo;
dispoff(!DEBUG);
command({copy }|TEMP2|{_mopnet.wrk + }|file|
{ }|TEMP2|{_mopnet.wrk});
dispoff({No});
mclear(memono);
mread(TEMP2|{_mopnet.wrk},memono)},
{ N G },{CloseAllMemo}
)})};
/* アクセスパターン手動編集 */
%HANDNET{
CloseAllMemo;mopen(memono1,0,21,639,459,{w});
loop ({
footnote({終了 取消},{b});waitx();
case (@xtype,
101,
{
CloseAllMemo;
mwrite(TEMP2|{_mopnet.wrk},memono1);
im({No});
},
201,
{
CloseAllMemo;
mwrite(TEMP2|{_mopnet.wrk},memono1);
im({No})
},
105,
{
CloseAllMemo;
mclear(memono1);
case (@filechk(TEMP2|{_mopnet.wrk}),
{Yes},{mread(TEMP2|{_mopnet.wrk},memono1)}
);
im({No})},
205,
{
CloseAllMemo;
mclear(memono1);
case (@filechk(TEMP2|{_mopnet.wrk}),
{Yes},
{mread(TEMP2|{_mopnet.wrk},memono1)}
);
im({No});
},
,{im({Yes})});
})};
%rnwNET{[NTset]
footnote({ネットの設定情報を更新});
var ok[2];
netset:=@tail(NTset,{netset=},{;});
usrset:=@tail(NTset,{usrset=},{;});
tgkset:=@tail(NTset,{tgkset=},{;});
loop ({
%a @plane(
{c ネットの設定情報をセットしてください。\n}|
{t ネット 名 /xxxxxxxxxx\n}|
{t ユーザー 設定情報 /xxxxxxxxxx\n}|
{s / ファイル一覧 \n}|
{t ネットでの処理情報 /xxxxxxxxxx\n}|
{s / ファイル一覧 \n}|
{s / 登録 / 削除 / 取消 \n},
netset,usrset,tgkset);
netset:=@head(@getline(a,1,1),{\n});
usrset:=@head(@getline(a,2,1),{\n});
%sel1 @head(@getline(a,3,1),{\n});
tgkset:=@head(@getline(a,4,1),{\n});
%sel2 @head(@getline(a,5,1),{\n});
ok:= @head(@getline(a,6,1),{\n});
im({No}); /* 右クリック時のデフォルト値 */
case (sel1,{ 1},{usrset:=@filesel({USR});im({Yes})});
case (sel2,{ 1},{tgkset:=@filesel({TG});im({Yes})});
case(ok,{ 1},
{case (netset={}||usrset={}||tgkset={},
{No},
{
im({netset=}|netset|{;}|{usrset=}|usrset|{;}|
{tgkset=}|tgkset|{;\n});
});
},
{ 2},{im({})},{ 3},{im(NTset)},
,{im({Yes})}
)});
};
%rstDATE{
[new]
case (new,
NTset,{CloseAllMemo}, /* 変更無し */
{}, /* 削除 */
{CloseAllMemo;
mclear(memono1);
case(LineNo>1,{Yes},
{madd(memono1,@read(TEMP2|{_mopnet.wrk},1,LineNo-1))});
case(LineNo<MaxLine,{Yes},
{madd(memono1,@read(TEMP2|{_mopnet.wrk},LineNo+1))});
mwrite(TEMP2|{_mopnet.wrk},memono1);
},
, /* 変更あり */
{
CloseAllMemo;
mclear(memono1);
case (LineNo>1,
{Yes},
{madd(memono1,@read(TEMP2|{_mopnet.wrk},1,LineNo-1))}
);
madd(memono1,new);
case (LineNo<MaxLine,
{Yes},
{madd(memono1,@read(TEMP2|{_mopnet.wrk},LineNo+1))}
);
mwrite(TEMP2|{_mopnet.wrk},memono1);
})
};
%ReNew {
var LineNo [6];
LineNo:=@xlinenum;
%MaxLine@nolmemo(memono1);
case (LineNo>MaxLine,
{Yes},{LineNo:=MaxLine},
{No},{case(LineNo<1,{Yes},{LineNo:=1})}
);
%NTset @memo(memono1,LineNo,1);
case (@head(NTset,{=}),
{netset}, {rstDATE(@rnwNET(NTset))},
{巡回;netset}, {rstDATE(@rnwNET(NTset))},
, {CloseAllMemo}
);
};
%setNET{
var ok[2];netset:={};usrset:={};tgkset:={};
loop ({footnote({ネットの設定情報をセットして下さい});
%a @plane(
{c ネットの設定情報をセットしてください。\n}|
{t ネット 名 /xxxxxxxxxx\n}|
{t ユーザー 設定情報 /xxxxxxxxxxxx\n}|
{s / ファイル一覧 \n}|
{t ネットでの処理情報 /xxxxxxxxxxxx\n}|
{s / ファイル一覧 \n}|
{s / 設定 / 取消 },
netset,usrset,tgkset);
netset:=@head(@getline(a,1,1),{\n});
usrset:=@head(@getline(a,2,1),{\n});
%sel1 @head(@getline(a,3,1),{\n});
tgkset:=@head(@getline(a,4,1),{\n});
%sel2 @head(@getline(a,5,1),{\n});
ok:= @head(@getline(a,6,1),{\n});
case (sel1,{ 1},{usrset:=@filesel({USR});im({Yes})});
case (sel2,{ 1},{tgkset:=@filesel({TG});im({Yes})});
case(ok,{ 1},
{case (netset<>{}&&usrset<>{}&&tgkset<>{},
{Yes},
{
write(TEMP2|{_mopnet.wrk},{netset=}|netset|{;}
|{usrset=}|usrset|{;}|{tgkset=}|tgkset|{;\n});
im({No})})},
{ 2},{im({Yes})}
,{im({No})}
)});
};
%NETset1{
loop ({footnote({セット内容を選択して下さい});SNDMSG({erande_f.snd});
select ({セット内容は?},
Wtime4,{im({No})},
{ ネットの登録設定 },{setNET;im({Yes})},
{ 終 了 },{im({No})}
)});
CloseAllMemo;mclear(memono1);
case (@filechk(TEMP2|{_mopnet.wrk}),
{Yes},{mread(TEMP2|{_mopnet.wrk},memono1)});
};
/* ネット登録セットアップ メイン処理*/
%NETset{
delfile(TEMP2|{_mopnet.wrk});
copyfile(CDIR2|{_mopnet.net},TEMP2|{_mopnet.wrk});
case (@filechk(TEMP2|{_mopnet.wrk}),
{Yes},{mread(TEMP2|{_mopnet.wrk},memono1)});
loop ({
mopen(memono1,0,21,639,459,{r});
footnote({終了 取消 変更 追加 読込編集},
{b});
waitx();
case (@xtype,
101,{
delfile(CDIR2|{_mopnet.bak});
renname(CDIR2|{_mopnet.net},{_mopnet.bak});
copyfile(TEMP2|{_mopnet.wrk},CDIR2|{_mopnet.net});
im({No})},
201,
{
delfile(CDIR2|{_mopnet.bak});
renname(CDIR2|{_mopnet.net},{_mopnet.bak});
copyfile(TEMP2|{_mopnet.wrk},CDIR2|{_mopnet.net});
im({No})
},
103,{im({No})}, 203,{im({No})},
106,{ReNew;im({Yes})}, 206,{ReNew;im({Yes})},
109,{NETset1;im({Yes})}, 209,{NETset1;im({Yes})},
111,{NETCOPY;im({Yes})},211,{NETCOPY;im({Yes})},
112,{HANDNET;im({Yes})},212,{HANDNET;im({Yes})},
memono1,{ReNew;im({Yes})},
,{CloseAllMemo;im({Yes})});footnote({});
});
/* ログ参照に使用したメモの削除処理 */
loop({case(@mcheck>=memono1,{Yes},{mclose(3)});im(@mcheck>=memono1)});
CloseAllMemo;
loop ({case (@mlast>=memono1,
{Yes},{case(@mcheck!=@mlast,{Yes},{mopen(@mlast)});
mclose(3);im({Yes})},
{No},{im({No})});
});setcdir(CDIR)};
var regist[80]; /* アクセス登録ファイル読み込み */
var accNET[10];/* アクセス登録ネット */
var accUSR[10];/* アクセス登録USRfile */
var accTGK[10];/* アクセス登録TGKfile */
var netset[10]; var usrset[12]; var tgkset[12];/* アクセスパターン登録変数 */
%memono @mlast+1;
%SCHG {
%memono1 @mlast+1;
case (memono1>9,
{Yes},
{footnote({メモ番号が一杯のためメモを開けません});
wait(1);im({});
},
{No},
{CloseAllMemo;madd(memono1,{\n});mclear(memono1);
NETset});
init;display(NET|{-ネットでの処理は\n}|TGK|{です。});
};
/* アクセスパターン変更処理 */
%selectBBS{
var BBSpat[1500];SNDMSG({erande_f.snd});
case (@filechk(CDIR2|{_mopnet.net}),
{Yes},{BBSpat:=@read(CDIR2|{_mopnet.net})},
{No},{BBSpat:=@read(CDIR2|{sample.net})});
%NTsetN{ [n]
%a @getline(BBSpat,n,1);
accNET:=@tail(a,{netset=},{;});
accUSR:=@tail(a,{usrset=},{;});
accTGK:=@tail(a,{tgkset=},{;});
case (accNET={}||accUSR={}||accTGK={},
{No},{setREGIST;init;MeSSAGe;
footnote(accNET|{に接続準備しました。})},
{Yes},{footnote(NET|{に接続準備しました。})});
};
%netset1 @tail(@getline(BBSpat,1,1),{netset=},{;});
%netset2 @tail(@getline(BBSpat,2,1),{netset=},{;});
%netset3 @tail(@getline(BBSpat,3,1),{netset=},{;});
%netset4 @tail(@getline(BBSpat,4,1),{netset=},{;});
%netset5 @tail(@getline(BBSpat,5,1),{netset=},{;});
%netset6 @tail(@getline(BBSpat,6,1),{netset=},{;});
%netset7 @tail(@getline(BBSpat,7,1),{netset=},{;});
%netset8 @tail(@getline(BBSpat,8,1),{netset=},{;});
%netset9 @tail(@getline(BBSpat,9,1),{netset=},{;});
%netset10 @tail(@getline(BBSpat,10,1),{netset=},{;});
%netset11 @tail(@getline(BBSpat,11,1),{netset=},{;});
%netset12 @tail(@getline(BBSpat,12,1),{netset=},{;});
%netset13 @tail(@getline(BBSpat,13,1),{netset=},{;});
%netset14 @tail(@getline(BBSpat,14,1),{netset=},{;});
%netset15 @tail(@getline(BBSpat,15,1),{netset=},{;});
%netset16 @tail(@getline(BBSpat,16,1),{netset=},{;});
%netset17 @tail(@getline(BBSpat,17,1),{netset=},{;});
%netset18 @tail(@getline(BBSpat,18,1),{netset=},{;});
%netset19 @tail(@getline(BBSpat,19,1),{netset=},{;});
select ({接続するネットを選択して下さい「現在の設定=}|NET|{ネット」},
Wtime4,{},{変更しない},{},
netset1,{NTsetN(1)}, netset2,{NTsetN(2)},
netset3,{NTsetN(3)}, netset4,{NTsetN(4)},
netset5,{NTsetN(5)}, netset6,{NTsetN(6)},
netset7,{NTsetN(7)}, netset8,{NTsetN(8)},
netset9,{NTsetN(9)}, netset10,{NTsetN(10)},
netset11,{NTsetN(11)}, netset12,{NTsetN(12)},
netset13,{NTsetN(13)}, netset14,{NTsetN(14)},
netset15,{NTsetN(15)}, netset16,{NTsetN(16)},
netset17,{NTsetN(17)}, netset18,{NTsetN(18)},
netset19,{NTsetN(19)}
);
};
/*HELPメッセージ表示*/
%HELP1{<自動環境設定>
只今からDORAに同梱してある、SAMPLE.USRファイルに基づいて
環境設定を行います。
<未設定部>
以下の項目については、ユーザー環境に合わせて自力で設定ください。
〔ID〕〔ハンドル〕〔パスワード〕〔回線設定〕〔モデムの種類〕
〔ネット名〕〔電話番号〕〔みかか距離〕
<自由度>
SAMPLE.USRファイルに基づいた設定以外の設定にしたい時は、それぞれの
設定項目で自由に変更できます。
<了解>
この画面の左下に有る[了解]ボタンをクリックすると
設定画面に移動します。
};
%HLPview{[helpNo]
%memono1 @mlast+1;
case (memono1>9,
{Yes},
{footnote({メモ番号が一杯のためメモを開けません});
wait(1);im({});
},
{No},
{CloseAllMemo;madd(memono1,{\n});
mclear(memono1);madd(memono1,helpNo)
});
mopen(memono1,0,21,639,459,{r});
loop ({footnote({了解},{b});
waitx();
case (@xtype,
101,{footnote({});im({No})},
201,{footnote({});im({No})},
,{im({Yes})}
);
});
case (@mcheck==memono1,
{Yes},{mclose(3)},
{No},{CloseAllMemo;mopen(memono1);mclose(3)}
);
};
/************************************************************************/
/* 以下メインモジュール */
/************************************************************************/
/* カレントディレクトリセット */
%CDIR @getcdir;
%CDIR2 @case (@nochar(CDIR)==3,{Yes},{im(CDIR)},{No},{im(CDIR|{\})});
/* オートパイロット停止時にPF11で再起動できるように */
setpf(11,{footnote({DORA Loading ...});}|
{setcdir(}|@xc({7b})|CDIR|@xc({7d})|{);}|{#DORAMAIN.PLT});
/*ドライブ指定*/
%selDIR {
[MSG]
footnote(MSG|{まで移動してキャンセルして下さい});
SNDMSG({erande_f.snd});
filesel;
im(@getcdir);
};
/* 初期設定 */
SETFILE:=CDIR2|{DORASET.SET};
case (@filechk(SETFILE),
{Yes},{setcdir(CDIR);#DORASET.SET;SETFILE1:={標準設定}},
{No}, {
case (@filechk(CDIR2|{SAMPLE.USR})
,{Yes},
{#SAMPLE.USR;HLPview(HELP1)});
setcdir(CDIR);#DORASET.PLP}
);
/* PIFファイルの設定 */
case (mopver,{Win31},
{case (@filechk(CDIR2|{DORA.PIF}),
{Yes},{compath(CDIR2|{DORA.PIF})}
);
RecDir({});/*受信ディレクトリーの初期化*/
});
init;
SaveAllMemo;
CloseAllMemo;
TGKFILE:=CDIR2|{DORATGK.SET};
case (@filechk(TGKFILE),
{Yes},{setcdir(CDIR);#DORATGK.SET;SETFILE2:={標準設定}},
{No}, {setcdir(CDIR);#DORATGK.PLP}
);
/* オープニングメッセージ */
%White{display(@xc({1B})|{[37m})};
%Green{display(@xc({1B})|{[32m})};
%Blue{display(@xc({1B})|{[36m})};
display({\n\n\n\n\n\n\n\n\n\n\n\n\n\n});
footnote({DORA}|VerLev|{初期処理中});
Green;
display({\n オートパイロットDORA}|VerLev|{を開始します\n});
%MeSSAGe{
case(NETname={},{Yes},
{display({ ☆}|NET|{-ネットでの処理を表示します。☆\n}|TGK)},
{No},{display({ ☆}|NETname|{での処理を表示します。☆\nアクセスナンバ}|
{ーは[}|CALL|{]に、メニューへのwaitTimeは[}|REDIALt|{秒]に設定されてます。\n}| TGK)});
footnote({ログファイルは}|LOG|{です。設定は}|NET|{-NETです});
setcdir2(CDIR);White;setcdir2(CDIR)
};
MeSSAGe;
/* オープニング画面表示 */
case (OPENING={No},
{No},
{
case (@filechk(CDIR2|{DORA.NPB}),
{Yes},{naplps(CDIR2|{DORA.NPB});waitx(1);napend
});
});
case (HOSEI={No},
{No},
{footnote({ネット選択メニュー表示中[「その他の設定」で変更出来ます。]});
case (@filechk(CDIR2|{_mopnet.net})||@filechk(CDIR2|{_sample.net}),
{Yes},{selectBBS})
});
ClosePort;
loop ({
SNDMSG ({erande_f.snd});
footnote({処理を選択してください。[選択ネット=}|NET|{ネット]});
setcdir(CDIR);
select ({処理を選択してください <<DORA( FAPXもどき) >>},
Wtime4*10,{im({Yes})},
{ RTBBS-NETと通信を行う },
{napend;setcdir(CDIR);#DORAONLN.PLP;im({Yes}) },
{ 各種の設定を行う },
{napend;setcdir(CDIR);#DORASET.PLP;init;im({Yes})},
{ 選択したネットでの処理の設定 },
{napend;setcdir(CDIR);#DORATGK.PLP;im({Yes})},
{ アクセスパターンの設定 },
{napend;SCHG;im({Yes})},
{ アクセスネットの選択 },
{napend;case (@filechk(CDIR2|{_mopnet.net}),{Yes},{selectBBS},
{No},{footnote({アクセスパターンを設定して下さい})});im({Yes})},
{ 電話料金を計算する },
{napend;case (@filechk(LOG2|{アクセスdat\CONNECT.DAT}),
{Yes},
{RYOUKIN},
{No},{footnote({みかか代計算の前には、現在選択した}|
{ネットにアクセスする事が必要です});wait(3)
});im({Yes})},
{ 受信ログを読む },
{napend;#DORAVIEW.PLP;im({Yes})},
{ 受信ログを整理する(RTTLC.EXEを実行する) },
{napend;#DORARTTL.PLP;im({Yes})},
{ ファイル操作 },
{napend;FILEMGR;im({Yes})},
{ DORA}|VerLev|{の説明 },
{napend;#DORAHELP.PLP;im({Yes})},
{ DORAを終了する },
{napend;ClosePort;im({No}) }
)
});
Blue;
RestoreMemo;
display({\nオートパイロットDORA}|VerLev|{を終了しました\n});
footnote({}); White;setcdir(CDIR);
delfile(TEMP2|{_bmaltxt.tmp});
delfile(TEMP2|{backlog.tmp});